Conventionally, when a request for a web page or other structured document transmitted by a client device is received by a server or computing system hosting the web page, the hosting system typically generates a base web page in the form of a Hyper Text Markup Language (HTML), Extensible Markup Language (XML), or other web browser-supported structured document. The generated structured document is then transmitted in a response to the requesting client via a Hypertext Transfer Protocol (HTTP) or other suitable connection for rendering at the client device. The structured document may include one or more resources (e.g. a JavaScript resource, a Cascading Style Sheet (CSS) resource, an image resource, a video resource, etc.), or, more typically, references to such resources, embedded within the transmitted document. By way of example, a resource embedded in an HTML document may generally be included or specified within a script element, style element, image element, or object element, among others, depending on the type of resource. The element referencing or specifying the resource may include a source attribute (e.g., src) identifying a location of the resource to the client requesting the web page. Typically, upon receipt of the response, a web browser or other client application executing at the client device then constructs a document object model (DOM) representation of the received structured document and checks to see if any of the referenced resources are stored locally in the web browser's cache. Valid resources stored locally in the cache may then be inserted into the DOM. The referenced resources not stored locally in the web browser's cache are then requested by the web browser. Typically, the web browser sends a separate request to a server for each referenced resource not stored locally in the web browser's cache.
Unfortunately, the memory size of the web browser's cache is typically very small so that newly cached resources often displace previously cached resources that were received relatively recently. For example, it is often the case that cached resources may only remain in the cache for approximately a day, or even less before being erased to make room for new resources. Furthermore, as each requested web page may generally require a large number of resources, a large number of individual requests for individual required resources are often used to fetch the resources not cached locally. The large number of requests utilize bandwidth and generally delay the rendering of the requested web page.